home *** CD-ROM | disk | FTP | other *** search
- /* btparm */
- #include <stdio.h>
- #include <btextern.h>
-
- /* gets parameters stored at INTINT, INTCHAR, INTKEY */
-
- int btparm ()
- {
- int *ip, i;
- char *cp;
- struct {
- int cs, ss, ds, es;
- } segreg, *segregp;
-
- int fromoff, /* from offset */
- fromseg, /* from segment */
- *tooff, /* to offset */
- toseg; /* to segment */
-
- /* get function code at INTINT */
- gfcode=peek(peek(INTINT,0),peek(INTINT+sizeof(int),0));
- switch (gfcode) {
- case 1 : /* file create and open */
- case 2 : segread(&segreg); /* get registers */
- fromoff = peek(INTCHAR,0); /* offset of file name */
- fromseg = peek(INTCHAR + sizeof(int),0);/*seg of filname*/
- tooff = gfilnam; /* offset of to filename */
- toseg = segreg.ds; /* data segment of global */
- movblock(fromoff,fromseg,tooff,toseg,LFILNAM + 1);
- /* now file name has been moved */
-
- /* now move keylength */
- fromoff = peek(INTINT,0) + sizeof(int);
- gkeylen = peek(fromoff,peek(INTINT + sizeof(int),0));
- break;
-
- case 3: /* close a file */
- case 4: /* insert a key */
- case 5: /* random read */
- segread (&segreg); /* get registers */
- fromoff = peek (INTINT, 0) + sizeof (int);
- gkeylen = peek(fromoff, peek (INTINT + sizeof (int), 0));
- fromoff = peek (INTINT, 0) + 2 * sizeof (int);
- gfilhand = peek (fromoff, peek (INTINT + sizeof (int), 0));
- fromoff = peek (INTINT, 0) + 4 * sizeof (int);
- gdatapt = peek (fromoff, peek (INTINT + sizeof (int), 0));
-
- /* now get new key value */
- fromoff = peek (INTKEY, 0);
- fromseg = peek (INTKEY + sizeof (int), 0);
- tooff = gfilkey;
- toseg = segreg.ds;
- movblock (fromoff, fromseg, tooff, toseg, LKEYLEN + 1);
-
- break;
-
- default: /* baaaaad function code man ! */
- gfcode = 0;
- BTSETCOD (NULL, NULL, 10); /* bad function code */
- break;
- }
- /* end of switch */
- return (0); /* no problem */
- }
- /* end of btparm */